#include<stdio.h>
#include<stdlib.h>
#include<unistd.h>
#include<sys/types.h>
#include<sys/wait.h>

int main()
{
    pid_t id = fork();
    
    if(id == 0)
    {
        putenv("hehe=aaaaaaaaaaaaaaaaaa");
        execl("./mytest", "mytest", NULL);
        exit(0);
    }
    
    pid_t rid = waitpid(id, NULL, 0);
    if(rid > 0)
        printf("father wait success!\n");

    return 0;
}

//int main()
//{
//    printf("I am a process\n");
//   
//    //以列表的形式传参(l); 命令行怎么写，参数怎么传(可变参数列表)，但结尾必须以NULL结尾
//    execl("/usr/bin/ls", "ls", "-l", NULL); 
   
//    char* const argv[] = {(char*)"ls", (char*)"-l", NULL}; //存储命令行参数的以NULL结尾的指针数组
//     //以数组的形式传参(v)
//    execv("/usr/bin/ls", argv);
//  
    
//    //有p自动去环境PATH中搜索，允许第一个参数只写程序名
//    execlp("bin", "ls", "-l", "NULL");
//    execvp("bin", argv);

//    char* const env[] = {(char*)"haha=hehe", (char*)"zzx=lala", NULL}; //自己维护环境变量
//    execle("./mytest", "-a", "-b", NULL, env); //设置全新的环境变量
//
//    return 0;
//}


